package com.example.demo.dao;

import com.example.demo.entity.pojo.HomeworkQuestion;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * 作业题目表(HomeworkQuestion)表数据库访问层
 *
 * @author makejava
 * @since 2025-07-13 17:30:30
 */
public interface HomeworkQuestionDao {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    HomeworkQuestion queryById(Integer id);

    /**
     * 根据作业ID查询所有题目（学生版，不包含答案和解析）
     *
     * @param homeworkId 作业ID
     * @return 题目列表
     */
    List<HomeworkQuestion> queryByHomeworkIdForStudent(@Param("homeworkId") Integer homeworkId);

    /**
     * 根据作业ID查询所有题目（教师版，包含答案和解析）
     *
     * @param homeworkId 作业ID
     * @return 题目列表
     */
    List<HomeworkQuestion> queryByHomeworkIdForTeacher(@Param("homeworkId") Integer homeworkId);

    /**
     * 根据作业ID查询所有题目（完整版，用于批改）
     *
     * @param homeworkId 作业ID
     * @return 题目列表
     */
    List<HomeworkQuestion> queryByHomeworkId(@Param("homeworkId") Integer homeworkId);

    /**
     * 新增数据
     *
     * @param homeworkQuestion 实例对象
     * @return 影响行数
     */
    int insert(HomeworkQuestion homeworkQuestion);

    /**
     * 批量新增题目
     *
     * @param questions 题目列表
     * @return 影响行数
     */
    int insertBatch(@Param("questions") List<HomeworkQuestion> questions);

    /**
     * 修改数据
     *
     * @param homeworkQuestion 实例对象
     * @return 影响行数
     */
    int update(HomeworkQuestion homeworkQuestion);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 影响行数
     */
    int deleteById(Integer id);

    /**
     * 根据作业ID删除所有题目
     *
     * @param homeworkId 作业ID
     * @return 影响行数
     */
    int deleteByHomeworkId(@Param("homeworkId") Integer homeworkId);

    /**
     * 统计作业题目数量
     *
     * @param homeworkId 作业ID
     * @return 题目数量
     */
    long countByHomeworkId(@Param("homeworkId") Integer homeworkId);
}
